#ifndef CLIQUE_H_INCLUDED
#define CLIQUE_H_INCLUDED

#include <list>
#include <iostream>

using namespace std;

class Clique
{
	public:
		Clique();
		void agregarVertice(int v);
		void agregarVertices(list<int>& vs);
		friend ostream& operator<<(ostream& os, Clique& c);
    list<int> vertices;
	private:

};

class Cliques
{
	public:
		Cliques(int cantidadNodos);
		void agregarClique(Clique& c, int vertice, Clique& padre);
		Clique& obtenerClique(int vertice);
		void establecerClique(int x, Clique& c);

	private:
    int cantNodos;
    list< pair<Clique, Clique> > listaCliquesYPadres;
    Clique* cliquesDeNodo;
    Clique raiz;
};

#endif // CLIQUE_H_INCLUDED
